Automated Deployment Pipeline তৈরি করা

Java Technologies - অ্যাপাচি অ্যান্ট (Apache ANT) Advanced Deployment এবং Rollback Management |
260
260

অ্যাপাচি অ্যান্ট (Apache ANT) ব্যবহার করে একটি অটোমেটেড ডিপ্লয়মেন্ট পাইপলাইন তৈরি করা সম্ভব, যা বিল্ড, টেস্ট, প্যাকেজিং এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে স্বয়ংক্রিয় করে। এটি সময় বাঁচায় এবং ত্রুটির ঝুঁকি কমায়, বিশেষ করে বড় মাপের প্রজেক্টে।


Automated Deployment Pipeline এর মূল ধাপগুলো

১. কোড ক্লিন এবং বিল্ড (Clean and Build)

বিল্ড প্রসেসের প্রথম ধাপ হলো আগের আউটপুট ক্লিন করা এবং নতুন বিল্ড তৈরি করা।

<target name="clean">
    <delete dir="build" />
</target>

<target name="build" depends="clean">
    <mkdir dir="build" />
    <javac srcdir="src" destdir="build" includes="**/*.java" />
</target>

২. ইউনিট টেস্টিং (Unit Testing)

বিল্ড শেষ হওয়ার পরে ইউনিট টেস্ট চালানোর মাধ্যমে কোড যাচাই করুন।

<target name="test" depends="build">
    <junit printsummary="yes" haltonfailure="true">
        <classpath>
            <pathelement location="lib/junit.jar" />
            <pathelement path="build" />
        </classpath>
        <test name="com.example.MyTest" />
    </junit>
</target>
  • haltonfailure="true": টেস্ট ব্যর্থ হলে বিল্ড থেমে যাবে।
  • printsummary="yes": টেস্টের সংক্ষিপ্ত ফলাফল দেখাবে।

৩. প্যাকেজিং (Packaging)

বিল্ড আউটপুট একটি প্যাকেজ ফরম্যাটে (যেমন JAR বা WAR) আর্কাইভ করুন।

<target name="package" depends="test">
    <jar destfile="dist/app.jar" basedir="build" />
</target>
  • destfile: আউটপুট প্যাকেজের লোকেশন এবং নাম।
  • basedir: প্যাকেজের সোর্স ফাইলের ডিরেক্টরি।

৪. রিমোট ডিপ্লয়মেন্ট (Remote Deployment)

রিমোট সার্ভারে প্যাকেজ আপলোড এবং ডিপ্লয় করুন। এটি SCP বা FTP এর মাধ্যমে করা যায়।

SCP ব্যবহার করে ডিপ্লয়:

<target name="deploy" depends="package">
    <scp file="dist/app.jar"
         todir="username@remote-server:/path/to/deploy"
         keyfile="/path/to/private-key"
         trust="yes" />
</target>

৫. রিমোট সার্ভারে অ্যাপ্লিকেশন চালানো (Remote Execution)

রিমোট সার্ভারে অ্যাপ্লিকেশন পুনরায় চালু করার জন্য sshexec টাস্ক ব্যবহার করুন।

<target name="restart-server" depends="deploy">
    <sshexec host="remote-server"
             username="username"
             keyfile="/path/to/private-key"
             command="sudo systemctl restart myapp" 
             trust="yes" />
</target>

Deployment Pipeline এর সম্পূর্ণ উদাহরণ

<project name="DeploymentPipeline" default="deploy">
    <!-- Properties -->
    <property name="src.dir" value="src" />
    <property name="build.dir" value="build" />
    <property name="dist.dir" value="dist" />
    <property name="package.file" value="dist/app.jar" />
    <property name="remote.server" value="remote-server" />
    <property name="remote.path" value="/path/to/deploy" />
    <property name="ssh.key" value="/path/to/private-key" />

    <!-- Clean -->
    <target name="clean">
        <delete dir="${build.dir}" />
        <delete dir="${dist.dir}" />
    </target>

    <!-- Build -->
    <target name="build" depends="clean">
        <mkdir dir="${build.dir}" />
        <javac srcdir="${src.dir}" destdir="${build.dir}" includes="**/*.java" />
    </target>

    <!-- Test -->
    <target name="test" depends="build">
        <junit printsummary="yes" haltonfailure="true">
            <classpath>
                <pathelement location="lib/junit.jar" />
                <pathelement path="${build.dir}" />
            </classpath>
            <test name="com.example.MyTest" />
        </junit>
    </target>

    <!-- Package -->
    <target name="package" depends="test">
        <mkdir dir="${dist.dir}" />
        <jar destfile="${package.file}" basedir="${build.dir}" />
    </target>

    <!-- Deploy -->
    <target name="deploy" depends="package">
        <scp file="${package.file}"
             todir="username@${remote.server}:${remote.path}"
             keyfile="${ssh.key}"
             trust="yes" />
    </target>

    <!-- Restart Server -->
    <target name="restart-server" depends="deploy">
        <sshexec host="${remote.server}"
                 username="username"
                 keyfile="${ssh.key}"
                 command="sudo systemctl restart myapp"
                 trust="yes" />
    </target>
</project>

Deployment Pipeline কাজের ধাপ

  1. Clean: আগের বিল্ড আউটপুট মুছে ফেলা।
  2. Build: সোর্স কোড কম্পাইল করে নতুন আউটপুট তৈরি।
  3. Test: ইউনিট টেস্ট চালিয়ে কোড যাচাই।
  4. Package: কম্পাইলড আউটপুট একটি প্যাকেজে রূপান্তর।
  5. Deploy: রিমোট সার্ভারে প্যাকেজ আপলোড।
  6. Restart: রিমোট সার্ভারে অ্যাপ্লিকেশন পুনরায় চালু।

Deployment Pipeline অপ্টিমাইজেশনের জন্য টিপস

  1. Incremental Builds: শুধুমাত্র পরিবর্তিত ফাইলগুলো বিল্ড করুন।
  2. Parallel Execution: নির্ভরশীলতাহীন ধাপগুলো একসাথে চালান।
  3. Property Files: ডায়নামিক কনফিগারেশন ম্যানেজ করতে প্রপার্টি ফাইল ব্যবহার করুন।
  4. Error Handling: haltonfailure ব্যবহার করে ত্রুটি হলে বিল্ড বন্ধ করুন।
  5. Continuous Integration (CI): Jenkins বা অন্যান্য CI টুলের মাধ্যমে ডিপ্লয়মেন্ট স্বয়ংক্রিয় করুন।

সারাংশ

অ্যাপাচি অ্যান্ট দিয়ে একটি অটোমেটেড ডিপ্লয়মেন্ট পাইপলাইন তৈরি করা সহজ এবং কার্যকর। এটি ম্যানুয়াল ত্রুটি এড়িয়ে বিল্ড, টেস্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়া দ্রুত এবং নির্ভুল করতে সাহায্য করে। ANT-এর সঙ্গে সঠিক টাস্ক এবং টুল ব্যবহার করে একটি শক্তিশালী পাইপলাইন তৈরি করা সম্ভব।

common.content_added_and_updated_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion